<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>Introduction to PHP and DTrace</title>

 </head>
 <body><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="features.dtrace.html">DTrace Dynamic Tracing</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="features.dtrace.dtrace.html">Using PHP and DTrace</a></div>
 <div class="up"><a href="features.dtrace.html">DTrace Dynamic Tracing</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div><hr /><div id="features.dtrace.introduction" class="sect1">
  <h2 class="title">Introduction to PHP and DTrace</h2>

  <p class="para">
   DTrace is an always-available, low overhead, tracing framework
   available on a number of platforms including Solaris, Mac OS X,
   Oracle Linux and BSD.  DTrace can trace operating system behavior
   and user program execution. It can display argument values and be
   used to infer performance statistics.  Probes are monitored by user
   created scripts written in the DTrace D scripting language. This
   allows efficient analysis of data points.
  </p>

  <p class="para">
   PHP probes that are not being actively monitored by a user&#039;s DTrace
   D script do not contain instrumented code so there is no
   performance degradation during normal application execution.
   Probes that are being monitored incur an overhead low enough to
   generally allow DTrace monitoring on live production systems.
  </p>

  <p class="para">
   PHP incorporates &quot;User-level Statically Defined Tracing&quot; (USDT)
   probes that are triggered at runtime. For example, when a D script
   is monitoring PHP&#039;s <em>function-entry</em> probe, then,
   every time a PHP script function is called, this probe is fired and
   the associated D script action code is executed.  This action code
   could, for example, print probe arguments such as the source file
   location of the PHP function. Or the action could aggregate data
   such as the number of times each function is called.
  </p>

  <p class="para">
   Only the PHP USDT probes are described here.  Refer to external
   general and operating system-specific DTrace literature to see how
   DTrace can be used to trace arbitrary functions, and how it can be
   used to trace operating system behavior.  Note not all DTrace
   features are available in all DTrace implementations.
  </p>

  <p class="para">
   DTrace static probes are included in PHP 5.4.  Prior to this they
   were available via a <a href="http://pecl.php.net/" class="link external">&raquo;&nbsp;PECL</a> extension, which is now
   obsolete.
  </p>

  <p class="para">
   The static DTrace probes in PHP can alternatively be used with the
   SystemTap facility on some Linux distributions.
  </p>
 </div><hr /><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="features.dtrace.html">DTrace Dynamic Tracing</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="features.dtrace.dtrace.html">Using PHP and DTrace</a></div>
 <div class="up"><a href="features.dtrace.html">DTrace Dynamic Tracing</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div></body></html>
